﻿using System;
using System.Collections.Generic;
using System.Text;

namespace Sinacor.Servico.Bovespa.Alocacao.Service.ServiceImplementation.Translator.DataContractToBusinessEntity
{
    public class ErroAlocacaoComitente
    {
        public BusinessEntity.Parameter.FiltroErroAlocacaoComitente ToFiltroErroAlocacaoComitente(DataContract.Request.FiltroErroAlocacaoComitenteRequest from)
        {
            BusinessEntity.Parameter.FiltroErroAlocacaoComitente to = null;

            if (from != null)
            {
                to = new BusinessEntity.Parameter.FiltroErroAlocacaoComitente();

                to.ApelidoCliente = from.ApelidoCliente;
                to.CodigoNegociacao = from.CodigoNegociacao;
                to.DataPregao = from.DataPregao;
                if(from.NaturezaOperacao.HasValue)
                {
                    switch(from.NaturezaOperacao.Value)
                    {
                        case Sinacor.Servico.Bovespa.Alocacao.Service.DataContract.Enum.NaturezaOperacao.Compra:
                            to.NaturezaOperacao = Sinacor.Servico.Bovespa.Alocacao.BusinessEntity.Enum.NaturezaOperacao.Compra;
                            break;
                        case Sinacor.Servico.Bovespa.Alocacao.Service.DataContract.Enum.NaturezaOperacao.CompraVenda:
                            to.NaturezaOperacao = Sinacor.Servico.Bovespa.Alocacao.BusinessEntity.Enum.NaturezaOperacao.CompraVenda;
                            break;
                        case Sinacor.Servico.Bovespa.Alocacao.Service.DataContract.Enum.NaturezaOperacao.Venda:
                            to.NaturezaOperacao = Sinacor.Servico.Bovespa.Alocacao.BusinessEntity.Enum.NaturezaOperacao.Venda;
                            break;
                    }
                }
                to.NumeroNegocio = from.NumeroNegocio;
                to.Erro1 = ToErroAlocacao(from.Erro1);
                to.Erro2 = ToErroAlocacao(from.Erro2);
                to.Erro3 = ToErroAlocacao(from.Erro3);
            }

            return to;
        }

        public BusinessEntity.ErroAlocacao ToErroAlocacao(DataContract.ErroAlocacao from)
        {
            BusinessEntity.ErroAlocacao to = null;

            if (from != null)
            {
                to = new BusinessEntity.ErroAlocacao();

                to.CodigoErro = from.CodigoErro;
                to.Descricao = from.Descricao;
                to.NumeroMensagem = from.NumeroMensagem;
                to.Operador = from.Operador;
                to.Tag = from.Tag;
            }

            return to;
        }
    }
}
